#ifndef MAINWIDGET_H
#define MAINWIDGET_H

#include <QWidget>
#include "databasehelper.h"
#include "networkhelper.h"
#include "playerhelper.h"

QT_BEGIN_NAMESPACE
namespace Ui { class mainWidget; }
QT_END_NAMESPACE

class mainWidget : public QWidget {
    Q_OBJECT

public:
    mainWidget(QWidget *parent = nullptr);
    ~mainWidget();

protected:
    void paintEvent(QPaintEvent *event) override;
    void mouseMoveEvent(QMouseEvent *event) override;//移动事件
    void mouseReleaseEvent(QMouseEvent *event) override;//释放鼠标
    void mousePressEvent(QMouseEvent *event) override;//按下鼠标

private slots:

    void on_pushButton_Close_clicked();//关闭窗口
    void on_pushButton_Skin_clicked();//更换窗口皮肤
    void on_pushButton_About_clicked();//应用程序关于操作


    void on_pushButton_Search_clicked();//搜索音乐
    void on_VopSlider_valueChanged(int value);//音量调节
    void on_progressSlider_valueChanged(int value);//播放进度
    void on_progressSlider_sliderPressed();//按下
    void on_progressSlider_sliderReleased();//释放
    void on_pushButton_Front_clicked();//上一曲
    void on_pushButton_Playpause_clicked();//暂停
    void on_pushButton_Next_clicked();//下一曲
    void on_pushButton_loopplay_clicked();//循环播放

    // 自定义槽函数
    void updatePlayerPosition(qint64 position);// 更新播放器当前播放位置
    void updatePlayerDuration(qint64 duration);//更新总时长
    void handleSearchResult(const QList<SongInfo>& songs);// 处理搜索结果
    void handleMusicUrl(const QString& playUrl, const QString& lyric);// 处理音乐播放地址
    void handleNetworkError(const QString& errorMsg);// 处理网络错误
    void playSearchMusic();//双击搜索列表，播放音乐
    void playHistoryMusic();   //双击历史播放lbiao

private:
    Ui::mainWidget *ui;
    // 三层接口实例
    DatabaseHelper* dbHelper;
    NetworkHelper* netHelper;
    PlayerHelper* playerHelper;


    bool mousePress = false;
    QPoint movePoint;
    int currentHistoryRow = 0;  // 当前历史记录行号
};

#endif // MAINWIDGET_H
